import request from "@/utils/request";

const DAILYSALESREPORT_BASE_URL = "/api/v1/daily-sales-report";

const DailySalesReportAPI = {
  /** 获取TP运营日报分页数据 */
  getPage(queryParams?: DailySalesReportPageQuery) {
    return request<any, PageResult<DailySalesReportPageVO[]>>({
      url: `${DAILYSALESREPORT_BASE_URL}/page`,
      method: "get",
      params: queryParams,
    });
  },
  /**
   * 获取TP运营日报表单数据
   *
   * @param id TP运营日报ID
   * @returns TP运营日报表单数据
   */
  getFormData(id: number) {
    return request<any, DailySalesReportForm>({
      url: `${DAILYSALESREPORT_BASE_URL}/${id}/form`,
      method: "get",
    });
  },

  /**
   *  添加TP运营日报
   *
   *  @param data TP运营日报表单数据
   */
  add(data: DailySalesReportForm) {
    return request({
      url: `${DAILYSALESREPORT_BASE_URL}`,
      method: "post",
      data: data,
    });
  },

  /**
   * 更新TP运营日报
   *
   * @param id TP运营日报ID
   * @param data TP运营日报表单数据
   */
  update(id: number, data: DailySalesReportForm) {
    return request({
      url: `${DAILYSALESREPORT_BASE_URL}/${id}`,
      method: "put",
      data: data,
    });
  },

  /**
   * 批量删除TP运营日报，多个以英文逗号(,)分割
   *
   * @param ids TP运营日报ID字符串，多个以英文逗号(,)分割
   */
  deleteByIds(ids: string) {
    return request({
      url: `${DAILYSALESREPORT_BASE_URL}/${ids}`,
      method: "delete",
    });
  },

  /**
   * 获取可用的报告日期列表
   */
  getAvailableDates() {
    return request<any, string[]>({
      url: `${DAILYSALESREPORT_BASE_URL}/available-dates`,
      method: "get",
    });
  },

  /**
   * 根据日期获取日报详情
   * 
   * @param date 报告日期 YYYY-MM-DD
   */
  getReportByDate(date: string) {
    return request<any, DailySalesReportVO>({
      url: `${DAILYSALESREPORT_BASE_URL}/by-date`,
      method: "get",
      params: { date }
    });
  },

  /**
   * 导出日报数据Excel
   *
   * @param queryParams 查询参数
   */
  exportExcel(queryParams?: DailySalesReportQuery) {
    return request({
      url: `${DAILYSALESREPORT_BASE_URL}/export`,
      method: "get",
      params: queryParams,
      responseType: "blob",
    });
  },

  /**
   * 导入日报数据Excel
   *
   * @param file Excel文件
   * @returns 导入结果
   */
  importExcel(file: File) {
    const formData = new FormData();
    formData.append("file", file);
    return request<any, ExcelResult>({
      url: `${DAILYSALESREPORT_BASE_URL}/import`,
      method: "post",
      data: formData,
      headers: {
        "Content-Type": "multipart/form-data",
      },
    });
  },

  /**
   * 下载日报数据导入模板
   */
  downloadTemplate() {
    return request({
      url: `${DAILYSALESREPORT_BASE_URL}/template`,
      method: "get",
      responseType: "blob",
    });
  }
}

export default DailySalesReportAPI;

/** TP运营日报分页查询参数 */
export interface DailySalesReportPageQuery extends PageQuery {
  /** 主键 */
  id?: number;
  /** 报告日期 */
  reportDate?: [string, string];
  /** 创建时间 */
  createTime?: [string, string];
  /** 更新时间 */
  updateTime?: [string, string];
}

/** TP运营日报表单对象 */
export interface DailySalesReportForm {
  /** 主键 */
  id?:  number;
  /** 报告日期 */
  reportDate?:  Date;
  /** 客单价 */
  averageTransactionValue?:  number;
  /** 转化率 */
  conversionRate?:  number;
  /** 月度销售任务（元） */
  monthlySalesTarget?:  number;
  /** 目前已完成销售额（元） */
  currentSalesAmount?:  number;
  /** 销售进度（%） */
  salesProgress?:  number;
  /** 时间进度（%） */
  timeProgress?:  number;
  /** GMV同比变化（%） */
  gmvYoyChange?:  number;
  /** 本月平均转化率 */
  avgConversionRate?:  number;
  /** 本月平均客单价 */
  avgTransactionValue?:  number;
  /** 本月总销售数量（件） */
  totalSalesQuantity?:  number;
  /** 创建时间 */
  createTime?:  Date;
  /** 更新时间 */
  updateTime?:  Date;
  /** 删除标记(0:正常 1:删除) */
  isDeleted?:  number;
}

/** TP运营日报分页对象 */
export interface DailySalesReportPageVO {
  /** 主键 */
  id?: number;
  /** 报告日期 */
  reportDate?: Date;
  /** 客单价 */
  averageTransactionValue?: number;
  /** 转化率 */
  conversionRate?: number;
  /** 月度销售任务（元） */
  monthlySalesTarget?: number;
  /** 目前已完成销售额（元） */
  currentSalesAmount?: number;
  /** 销售进度（%） */
  salesProgress?: number;
  /** 时间进度（%） */
  timeProgress?: number;
  /** GMV同比变化（%） */
  gmvYoyChange?: number;
  /** 本月平均转化率 */
  avgConversionRate?: number;
  /** 本月平均客单价 */
  avgTransactionValue?: number;
  /** 本月总销售数量（件） */
  totalSalesQuantity?: number;
  /** 创建时间 */
  createTime?: Date;
  /** 更新时间 */
  updateTime?: Date;
  /** 删除标记(0:正常 1:删除) */
  isDeleted?: number;
}

/** TP运营日报视图对象 */
export interface DailySalesReportVO {
  /** 主键 */
  id?: number;
  /** 报告日期 */
  reportDate?: string;
  /** 客单价 */
  averageTransactionValue?: number;
  /** 转化率 */
  conversionRate?: number;
  /** 月度销售任务（元） */
  monthlySalesTarget?: number;
  /** 目前已完成销售额（元） */
  currentSalesAmount?: number;
  /** 销售进度（%） */
  salesProgress?: number;
  /** 时间进度（%） */
  timeProgress?: number;
  /** GMV同比变化（%） */
  gmvYoyChange?: number;
  /** 本月平均转化率 */
  avgConversionRate?: number;
  /** 本月平均客单价 */
  avgTransactionValue?: number;
  /** 本月总销售数量（件） */
  totalSalesQuantity?: number;
  /** 创建时间 */
  createTime?: string;
  /** 更新时间 */
  updateTime?: string;
}

/** TP运营日报查询参数 */
export interface DailySalesReportQuery {
  pageNum?: number;
  pageSize?: number;
  reportDate?: string[];
  createTime?: string[];
  updateTime?: string[];
}

/** Excel导入结果 */
export interface ExcelResult {
  success: boolean;
  validCount: number;
  invalidCount: number;
  errorMsgs: string[];
}
